package com.example.sbeducation.service;

import com.example.sbeducation.dto.LoginDTO;
import com.example.sbeducation.dto.PasswordChangeDTO;
import com.example.sbeducation.dto.UserInfoDTO;
import com.example.sbeducation.entity.User;

import java.util.List;

/**
 * 用户服务接口
 */
public interface UserService {

  /**
   * 学生登录
   * 
   * @param loginDTO 登录信息
   * @return 用户信息
   */
  UserInfoDTO studentLogin(LoginDTO loginDTO);

  /**
   * 教师登录
   * 
   * @param loginDTO 登录信息
   * @return 用户信息
   */
  UserInfoDTO teacherLogin(LoginDTO loginDTO);

  /**
   * 根据ID获取用户
   * 
   * @param userId 用户ID
   * @return 用户
   */
  User getUserById(Long userId);

  /**
   * 根据用户名获取用户
   * 
   * @param username 用户名
   * @return 用户
   */
  User getUserByUsername(String username);

  /**
   * 更新用户信息
   * 
   * @param userInfoDTO 用户信息
   */
  void updateUserInfo(UserInfoDTO userInfoDTO);

  /**
   * 修改密码
   * 
   * @param passwordChangeDTO 密码修改信息
   */
  void changePassword(PasswordChangeDTO passwordChangeDTO);

  /**
   * 获取用户的联系人列表
   * 学生获取所有教师，教师获取所有学生
   * 
   * @param userId 用户ID
   * @return 联系人列表
   */
  List<UserInfoDTO> getContactsByUserRole(Long userId);
}